package com.quxiu.system.service;

import java.util.List;

import com.quxiu.common.core.utils.security.KeyPairVo;
import com.quxiu.system.api.domain.SysDept;
import com.quxiu.system.api.domain.SysUser;
import com.quxiu.system.constant.PushDataType;
import com.quxiu.system.constant.PushEvent;
import com.quxiu.system.domain.SysApp;

/**
 * 应用Service接口
 *
 * @author GaoYang
 * @date 2024-01-19
 */
public interface ISysAppService {
    /**
     * 查询应用
     *
     * @param appId 应用主键
     * @return 应用
     */
    SysApp selectSysAppByAppId(String appId);

    /**
     * 查询应用列表
     *
     * @param sysApp 应用
     * @return 应用集合
     */
    List<SysApp> selectSysAppList(SysApp sysApp);

    /**
     * 新增应用
     *
     * @param sysApp 应用
     * @return 结果
     */
    int insertSysApp(SysApp sysApp);

    /**
     * 修改应用
     *
     * @param sysApp 应用
     * @return 结果
     */
    int updateSysApp(SysApp sysApp);

    /**
     * 批量删除应用
     *
     * @param appIds 需要删除的应用主键集合
     * @return 结果
     */
    int deleteSysAppByAppIds(String[] appIds);

    /**
     * 删除应用信息
     *
     * @param appId 应用主键
     * @return 结果
     */
    int deleteSysAppByAppId(String appId);

    /**
     * 全量推送用户数据
     * @param appId
     */
    void pushUserDataAll(String appId);

    /**
     * 全量推送部门数据
     * @param appId
     */
    void pushDeptDataAll(String appId);

    /**
     * 增量推送数据
     * @param dataType 数据类型
     * @param pushEvent 推送事件
     * @param bizId 业务id
     * @param pushData 推送数据
     */
    void pushDataIncr(PushDataType dataType, PushEvent pushEvent, String bizId, Object pushData);

    /**
     * 执行数据推送
     */
    void executePushData();
}
